/**
 * 
 */
package br.com.ufc.apsoo.hotelar.dao.impl;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.ufc.apsoo.hotelar.dao.TipoApartamentoDao;
import br.com.ufc.apsoo.hotelar.model.TipoApartamento;
import br.com.ufc.apsoo.hotelar.utils.HibernateUtil;

/**
 * @author Virginia
 *
 */
public class TipoApartamentoDaoImpl implements TipoApartamentoDao {

	@Override
	public void save(TipoApartamento tipoApartamento) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		session.save(tipoApartamento);
		tx.commit();
		session.close();
	}

	@Override
	public void remove(TipoApartamento tipoApartamento) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		session.delete(tipoApartamento);
		tx.commit();
		session.close();		
	}

	@Override
	public void update(TipoApartamento tipoApartamento) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		session.update(tipoApartamento);
		tx.commit();
		session.close();		
	}

	@Override
	public TipoApartamento getTipoApartamentoById(int id) {
		Session session = HibernateUtil.getSession();
		try {
			return (TipoApartamento) session.get(TipoApartamento.class, id);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return null;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<TipoApartamento> list() {
		Session session = HibernateUtil.getSession();
		try {
			return session.createCriteria(TipoApartamento.class).list();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return null;
	}

}
